/*
Daniel Mena
08825
laboratorio 1
programa que simula un radio con una misma interfas para todos
*/

import java.util.Scanner;
import java.util.InputMismatchException;


public class DriverEnamoRadio{


    //Aqui empieza la ejecucion del programa
    public static void main(String args[]){
	

       EnamoRadio mi_radio;
       mi_radio = new EnamoRadio();
       EnamoRadio[] mis_estaciones1 = new EnamoRadio[12];// 
       EnamoRadio[] mis_estaciones2 = new EnamoRadio[12];//
       int guardar = 0;
         

        for (int fil=0; fil<mis_estaciones1.length; fil++)
                mis_estaciones1[fil] = new EnamoRadio();

        for (int fil=0; fil <mis_estaciones2.length; fil++){
                mis_estaciones2[fil] = new EnamoRadio();
                mis_estaciones2[fil].setEmisora(530);
        }
			
		
        //Declaracion de variables
        int opcion;
   
        

        do{
            menu();
            System.out.println("+--$$--------------------------$$--+");
			System.out.println("| **--**  ESTADO DEL RADIO   **--** ");
			System.out.println(mi_radio);
			System.out.println("+--$$--------------------------$$--+");
            //-----------------------------------------------------
            opcion = (int)obtenerNumero("Ingrese su opcion: ", false);
 
            //-----------------------------------------------------
            switch(opcion){
                case 1://AQUI SE ENCIENDE EL RADIO O SE APAGA
				
                    mi_radio.onoff();
						
                    break;
                case 2://ESTA ES LA OPCION PARA EL CAMBIO DE EMISORA
                    mi_radio.cambio1();
                    break;
                case 3://"ESTE ES EL BOTON DE ADELANTAR"
				
                    mi_radio.avanzar();
                    
                    break;
					
                case 4: //"ESTA ES LA OPCION PARA RETROCEDER DE EMISIORA"
                     mi_radio.retroceder();
                        break;
                    
                case 5://ESTA OPCION ES PARA GUARDAR SU EMISORA FAVORITA
                	mi_radio.save(guardar);
                	/*
                    guardar = 0;
*/
                    guardar = (int)obtenerNumero("\n Ingrese la posicion de memoria que decea GUARDAR (1 a 12):  ", true);


                    if (guardar < 0 ){

                            System.out.print("\n ERROR: el rango es de 1 a 12. (regreso a menu) \n ");
                            break;
                            }

                    if (guardar >11){
                            System.out.print("\n ERROR: el rango es de 1 a 12. (regreso a menu) \n ");
                            break;
                            }



                    System.out.print("\n SU ESTACION FAVORITA AH SIDO GUARDADA \n ");
                    if (mi_radio.getFM() ==true)
                    	mis_estaciones1[guardar].setEmisora(mi_radio.getEmisora() );
                    else
                            mis_estaciones2[guardar].setEmisora(mi_radio.getEmisora() );	


                    break;
                case 6://ESTA OPCION ES PARA ESCUCHAR SU EMISORA FAVORITA.
				
				
                    guardar = 0;
                    guardar = (int)obtenerNumero("\n Ingrese la posicion de memoria que decea escuchar (0 a 11):  ", true);

                    if (guardar < 0 ){

                            System.out.print("\n ERROR: el rango es de 0 a 11. (regreso a menu) \n ");
                            break;
                            }

                    if (guardar >11){
                            System.out.print("\n ERROR: el rango es de 0 a 11. (regreso a menu) \n ");
                            break;
                            }


                    if (mi_radio.getFM() ==true)
                            mi_radio.setEmisora(mis_estaciones1[guardar].getEmisora());
                    else
                            mi_radio.setEmisora(mis_estaciones2[guardar].getEmisora());
                  
                    break;
				
					
                case 7: //FIN DEL PROGRAMA.
					 System.out.println("Su Radio se ah apagado compleatamente\n");
					 System.out.println("para volver a escuhcarnos\n");
					 System.out.println("por favor enchufle la radio nuevamente XD\n");
                    break;
				
                   
                default:
                    System.out.println("\n ERROR: ESA OPCION NO ESTA EN EL MENU... \n");            
            }
        }while(opcion!=7);
	
		
	
	
	
	}
	
	//menu
    //Recibe: nada
    //Devuelve: void
    //Muestra en pantalla las opciones del menu
	
	public static void menu(){
        System.out.println();
        System.out.println("+--$$       MENU DE OPCIONES      $$--+");
        System.out.println("|**  1.  Encender o apagar radio    **|");
		System.out.println("|**  2.  cambiar de AM A FM		    **|");
        System.out.println("|**  3.  Adelantar Estacion		    **|");
        System.out.println("|**  4.  Retroceder Estacion   	    **|");
        System.out.println("|**  5.  Guardar Emisora Faborita   **|");
        System.out.println("|**  6.  Elegir Emisora Faborita    **|");
        System.out.println("|**  7.  Salir del programa.        **|");
        System.out.println("+----$$-------------------------$$----+");
		
    }
	
	//obtenerNumero
    //Recibe: Mensaje y un boolean
    //Devuelve: double (-1 indica que el valor es erroneo)
    //Pide un valor numerico al usuario y revisa que sea un numero.
    public static double obtenerNumero(String mensaje, boolean mostrar){
        Scanner ingreso = new Scanner(System.in);
        double num = -1;
        
        System.out.print(mensaje);
        try{
            num = ingreso.nextDouble();
        }
        catch(InputMismatchException exception){
            if (mostrar)
                System.out.println("\n ERROR: Opcion invalida... \n");
        }
        finally{
            ingreso.nextLine();//Atrapar el ENTER
        }
        return num;
    }
	
	
	
	
}